import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import math
import warnings
warnings.filterwarnings("ignore")
# fix_yahoo_finance is used to fetch data
import fix_yahoo_finance as yf
yf.pdr_override()
# input
# Machine Learning Stock
symbols = ['GOOGL','MSFT','FB','AMZN','NFLX','CRM','ADBE','MTCH','IAC','TTD','FIVN','V','MA','PANW','IBM','FTNT','NVDA','INTC','CUB','IBM','ACN','EPAM']
start = '2017-01-01'
end = '2019-01-01'
df = pd.DataFrame()
for s in symbols:
df[s] = yf.download(s,start,end)['Adj Close']
[*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded [*********************100%***********************] 1 of 1 downloaded
from datetime import datetime
from dateutil import relativedelta
d1 = datetime.strptime(start, "%Y-%m-%d")
d2 = datetime.strptime(end, "%Y-%m-%d")
delta = relativedelta.relativedelta(d2,d1)
print('How many years of investing?')
print('%s years' % delta.years)
How many years of investing? 2 years
number_of_years = delta.years
days = (df.index[-1] - df.index[0]).days
days
727
df.head()
| GOOGL | MSFT | FB | AMZN | NFLX | CRM | ADBE | MTCH | IAC | TTD | ... | V | MA | PANW | IBM | FTNT | NVDA | INTC | CUB | ACN | EPAM | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Date | |||||||||||||||||||||
| 2017-01-03 | 808.010010 | 59.294807 | 116.860001 | 753.669983 | 127.489998 | 70.540001 | 103.480003 | 16.494013 | 67.440002 | 26.930000 | ... | 77.918709 | 103.471863 | 126.940002 | 146.935089 | 30.120001 | 100.937172 | 33.873764 | 48.126457 | 110.738106 | 63.660000 |
| 2017-01-04 | 807.770020 | 59.029503 | 118.690002 | 757.179993 | 129.410004 | 72.800003 | 104.139999 | 16.455944 | 68.169998 | 27.100000 | ... | 78.555786 | 104.453651 | 128.000000 | 148.754303 | 30.420000 | 103.292122 | 33.697922 | 49.556442 | 111.004356 | 64.360001 |
| 2017-01-05 | 813.020020 | 59.029503 | 120.669998 | 780.450012 | 131.809998 | 72.790001 | 105.910004 | 17.122175 | 69.349998 | 27.450001 | ... | 79.477066 | 105.260406 | 131.970001 | 148.262131 | 30.830000 | 100.670013 | 33.642395 | 47.140259 | 109.340340 | 64.750000 |
| 2017-01-06 | 825.210022 | 59.541157 | 123.410004 | 795.989990 | 131.070007 | 73.800003 | 108.300003 | 17.160246 | 69.650002 | 27.700001 | ... | 80.574791 | 106.017982 | 135.050003 | 148.991577 | 31.010000 | 102.015701 | 33.762699 | 46.203373 | 110.585968 | 66.870003 |
| 2017-01-09 | 827.179993 | 59.351658 | 124.900002 | 796.919983 | 130.949997 | 73.959999 | 108.570000 | 17.274456 | 69.779999 | 28.440001 | ... | 80.123962 | 105.811363 | 133.720001 | 147.339340 | 31.309999 | 106.151749 | 33.883030 | 46.104755 | 109.349854 | 66.839996 |
5 rows × 21 columns
plt.figure(figsize=(12,8))
plt.plot(df)
plt.title('Machine Learning Stocks Closing Price')
plt.legend(labels=df.columns)
<matplotlib.legend.Legend at 0x1dc4f915550>
# Normalize the data
normalize = (df - df.min())/ (df.max() - df.min())
plt.figure(figsize=(18,12))
plt.plot(normalize)
plt.title('Machine Learning Stocks Normalize')
plt.legend(labels=normalize.columns)
<matplotlib.legend.Legend at 0x1dc4f9b3b70>
stock_rets = df.pct_change().dropna()
plt.figure(figsize=(12,8))
plt.plot(stock_rets)
plt.title('Machine Learning Stocks Returns')
plt.legend(labels=stock_rets.columns)
<matplotlib.legend.Legend at 0x1dc4fa4dfd0>
plt.figure(figsize=(12,8))
plt.plot(stock_rets.cumsum())
plt.title('Machine Learning Stocks Returns Cumulative Sum')
plt.legend(labels=stock_rets.columns)
<matplotlib.legend.Legend at 0x1dc4fae8898>
sns.set(style='ticks')
ax = sns.pairplot(stock_rets, diag_kind='hist')
nplot = len(stock_rets.columns)
for i in range(nplot) :
for j in range(nplot) :
ax.axes[i, j].locator_params(axis='x', nbins=6, tight=True)
ax = sns.PairGrid(stock_rets)
ax.map_upper(plt.scatter, color='purple')
ax.map_lower(sns.kdeplot, color='blue')
ax.map_diag(plt.hist, bins=30)
for i in range(nplot) :
for j in range(nplot) :
ax.axes[i, j].locator_params(axis='x', nbins=6, tight=True)
plt.figure(figsize=(7,7))
corr = stock_rets.corr()
# plot the heatmap
sns.heatmap(corr,
xticklabels=corr.columns,
yticklabels=corr.columns,
cmap="Blues")
<matplotlib.axes._subplots.AxesSubplot at 0x1dc61ee4518>
# Box plot
stock_rets.plot(kind='box',figsize=(12,8))
<matplotlib.axes._subplots.AxesSubplot at 0x1dc5d13fcc0>
rets = stock_rets.dropna()
plt.figure(figsize=(12,8))
plt.scatter(rets.mean(), rets.std(),alpha = 0.5)
plt.title('Stocks Risk & Returns')
plt.xlabel('Expected returns')
plt.ylabel('Risk')
plt.grid(which='major')
for label, x, y in zip(rets.columns, rets.mean(), rets.std()):
plt.annotate(
label,
xy = (x, y), xytext = (50, 50),
textcoords = 'offset points', ha = 'right', va = 'bottom',
arrowprops = dict(arrowstyle = '-', connectionstyle = 'arc3,rad=-0.3'))
rets = stock_rets.dropna()
area = np.pi*20.0
sns.set(style='darkgrid')
plt.figure(figsize=(12,8))
plt.scatter(rets.mean(), rets.std(), s=area)
plt.xlabel("Expected Return", fontsize=15)
plt.ylabel("Risk", fontsize=15)
plt.title("Return vs. Risk for Stocks", fontsize=20)
for label, x, y in zip(rets.columns, rets.mean(), rets.std()) :
plt.annotate(label, xy=(x,y), xytext=(50, 0), textcoords='offset points',
arrowprops=dict(arrowstyle='-', connectionstyle='bar,angle=180,fraction=-0.2'),
bbox=dict(boxstyle="round", fc="w"))
rest_rets = rets.corr()
pair_value = rest_rets.abs().unstack()
pair_value.sort_values(ascending = False)
EPAM EPAM 1.000000
TTD TTD 1.000000
INTC INTC 1.000000
NVDA NVDA 1.000000
FTNT FTNT 1.000000
IBM IBM 1.000000
PANW PANW 1.000000
MA MA 1.000000
V V 1.000000
IAC IAC 1.000000
ACN ACN 1.000000
MTCH MTCH 1.000000
ADBE ADBE 1.000000
CRM CRM 1.000000
NFLX NFLX 1.000000
AMZN AMZN 1.000000
FB FB 1.000000
MSFT MSFT 1.000000
CUB CUB 1.000000
FIVN FIVN 1.000000
GOOGL GOOGL 1.000000
MA V 0.892900
V MA 0.892900
MTCH IAC 0.786228
IAC MTCH 0.786228
CRM ADBE 0.785597
ADBE CRM 0.785597
CRM MA 0.781389
MA CRM 0.781389
MSFT V 0.777083
...
TTD FIVN 0.245916
FIVN TTD 0.245916
CUB IBM 0.245631
IBM CUB 0.245631
FIVN CUB 0.244070
CUB FIVN 0.244070
TTD NVDA 0.230372
NVDA TTD 0.230372
CUB FB 0.220368
FB CUB 0.220368
IBM IAC 0.217917
IAC IBM 0.217917
PANW TTD 0.210500
TTD PANW 0.210500
MTCH FIVN 0.210139
FIVN MTCH 0.210139
CUB PANW 0.208563
PANW CUB 0.208563
INTC TTD 0.205115
TTD INTC 0.205115
IBM PANW 0.197830
PANW IBM 0.197830
CUB TTD 0.190216
TTD CUB 0.190216
MTCH IBM 0.165667
IBM MTCH 0.165667
FIVN 0.161164
FIVN IBM 0.161164
TTD IBM 0.159211
IBM TTD 0.159211
Length: 441, dtype: float64
# Normalized Returns Data
Normalized_Value = ((rets[:] - rets[:].min()) /(rets[:].max() - rets[:].min()))
Normalized_Value.head()
| GOOGL | MSFT | FB | AMZN | NFLX | CRM | ADBE | MTCH | IAC | TTD | ... | V | MA | PANW | IBM | FTNT | NVDA | INTC | CUB | ACN | EPAM | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Date | |||||||||||||||||||||
| 2017-01-04 | 0.448891 | 0.383439 | 0.732522 | 0.393867 | 0.475429 | 0.627588 | 0.427781 | 0.555197 | 0.587599 | 0.254630 | ... | 0.478502 | 0.553318 | 0.604241 | 0.537590 | 0.520225 | 0.576488 | 0.421603 | 0.582652 | 0.570820 | 0.434195 |
| 2017-01-05 | 0.506997 | 0.417845 | 0.736170 | 0.517822 | 0.490618 | 0.458039 | 0.480143 | 0.663876 | 0.607814 | 0.266139 | ... | 0.508544 | 0.539717 | 0.659046 | 0.442458 | 0.533028 | 0.443317 | 0.440115 | 0.273118 | 0.438834 | 0.400648 |
| 2017-01-06 | 0.579618 | 0.484498 | 0.757669 | 0.466382 | 0.385336 | 0.531879 | 0.507609 | 0.566706 | 0.567343 | 0.259501 | ... | 0.526173 | 0.535660 | 0.640483 | 0.492351 | 0.505226 | 0.549251 | 0.467406 | 0.387046 | 0.639017 | 0.581980 |
| 2017-01-09 | 0.471840 | 0.393372 | 0.719724 | 0.377282 | 0.405810 | 0.470187 | 0.408624 | 0.577961 | 0.559677 | 0.290194 | ... | 0.362010 | 0.465174 | 0.560236 | 0.395281 | 0.519185 | 0.623540 | 0.467344 | 0.457025 | 0.467764 | 0.356416 |
| 2017-01-10 | 0.439338 | 0.415390 | 0.660924 | 0.365643 | 0.374526 | 0.460188 | 0.382250 | 0.579249 | 0.559666 | 0.269369 | ... | 0.363812 | 0.463713 | 0.601409 | 0.385485 | 0.559529 | 0.492071 | 0.438734 | 0.532946 | 0.556535 | 0.370650 |
5 rows × 21 columns
Normalized_Value.corr()
| GOOGL | MSFT | FB | AMZN | NFLX | CRM | ADBE | MTCH | IAC | TTD | ... | V | MA | PANW | IBM | FTNT | NVDA | INTC | CUB | ACN | EPAM | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| GOOGL | 1.000000 | 0.771586 | 0.640550 | 0.719742 | 0.602570 | 0.699130 | 0.675725 | 0.368385 | 0.431154 | 0.319827 | ... | 0.737875 | 0.714641 | 0.364781 | 0.425271 | 0.484578 | 0.559668 | 0.533903 | 0.332338 | 0.588746 | 0.571456 |
| MSFT | 0.771586 | 1.000000 | 0.547119 | 0.738228 | 0.609286 | 0.752413 | 0.770251 | 0.354319 | 0.411753 | 0.337338 | ... | 0.777083 | 0.773570 | 0.375190 | 0.459310 | 0.529380 | 0.529161 | 0.605375 | 0.365568 | 0.667848 | 0.572117 |
| FB | 0.640550 | 0.547119 | 1.000000 | 0.590811 | 0.486307 | 0.522392 | 0.493976 | 0.342744 | 0.372240 | 0.289511 | ... | 0.557580 | 0.584230 | 0.284690 | 0.254803 | 0.362659 | 0.472328 | 0.406506 | 0.220368 | 0.383739 | 0.394378 |
| AMZN | 0.719742 | 0.738228 | 0.590811 | 1.000000 | 0.644157 | 0.690820 | 0.648191 | 0.364880 | 0.431046 | 0.355095 | ... | 0.672126 | 0.709773 | 0.366557 | 0.341746 | 0.426744 | 0.523415 | 0.481682 | 0.263359 | 0.526520 | 0.536802 |
| NFLX | 0.602570 | 0.609286 | 0.486307 | 0.644157 | 1.000000 | 0.628014 | 0.590377 | 0.383384 | 0.417863 | 0.291443 | ... | 0.617772 | 0.607967 | 0.406267 | 0.323364 | 0.466309 | 0.498667 | 0.454671 | 0.265071 | 0.457673 | 0.496877 |
| CRM | 0.699130 | 0.752413 | 0.522392 | 0.690820 | 0.628014 | 1.000000 | 0.785597 | 0.440203 | 0.502546 | 0.366959 | ... | 0.771157 | 0.781389 | 0.437981 | 0.386509 | 0.583155 | 0.549895 | 0.481022 | 0.346299 | 0.569139 | 0.589638 |
| ADBE | 0.675725 | 0.770251 | 0.493976 | 0.648191 | 0.590377 | 0.785597 | 1.000000 | 0.397581 | 0.452810 | 0.358018 | ... | 0.743943 | 0.718496 | 0.400318 | 0.393894 | 0.557200 | 0.534651 | 0.469750 | 0.332117 | 0.556661 | 0.582843 |
| MTCH | 0.368385 | 0.354319 | 0.342744 | 0.364880 | 0.383384 | 0.440203 | 0.397581 | 1.000000 | 0.786228 | 0.289128 | ... | 0.397208 | 0.379119 | 0.270165 | 0.165667 | 0.372520 | 0.336972 | 0.282441 | 0.267054 | 0.275456 | 0.346317 |
| IAC | 0.431154 | 0.411753 | 0.372240 | 0.431046 | 0.417863 | 0.502546 | 0.452810 | 0.786228 | 1.000000 | 0.387182 | ... | 0.473497 | 0.455092 | 0.326356 | 0.217917 | 0.421267 | 0.370356 | 0.309624 | 0.285079 | 0.339965 | 0.389252 |
| TTD | 0.319827 | 0.337338 | 0.289511 | 0.355095 | 0.291443 | 0.366959 | 0.358018 | 0.289128 | 0.387182 | 1.000000 | ... | 0.359367 | 0.359957 | 0.210500 | 0.159211 | 0.298966 | 0.230372 | 0.205115 | 0.190216 | 0.278909 | 0.326512 |
| FIVN | 0.433943 | 0.445142 | 0.296260 | 0.406407 | 0.381199 | 0.489272 | 0.462129 | 0.210139 | 0.279335 | 0.245916 | ... | 0.434688 | 0.472931 | 0.262595 | 0.161164 | 0.370785 | 0.365666 | 0.309627 | 0.244070 | 0.330560 | 0.432436 |
| V | 0.737875 | 0.777083 | 0.557580 | 0.672126 | 0.617772 | 0.771157 | 0.743943 | 0.397208 | 0.473497 | 0.359367 | ... | 1.000000 | 0.892900 | 0.423170 | 0.462394 | 0.569341 | 0.541747 | 0.515151 | 0.382200 | 0.651217 | 0.612359 |
| MA | 0.714641 | 0.773570 | 0.584230 | 0.709773 | 0.607967 | 0.781389 | 0.718496 | 0.379119 | 0.455092 | 0.359957 | ... | 0.892900 | 1.000000 | 0.404769 | 0.448107 | 0.544509 | 0.545350 | 0.520801 | 0.379033 | 0.655655 | 0.588460 |
| PANW | 0.364781 | 0.375190 | 0.284690 | 0.366557 | 0.406267 | 0.437981 | 0.400318 | 0.270165 | 0.326356 | 0.210500 | ... | 0.423170 | 0.404769 | 1.000000 | 0.197830 | 0.460549 | 0.296546 | 0.293506 | 0.208563 | 0.278169 | 0.358673 |
| IBM | 0.425271 | 0.459310 | 0.254803 | 0.341746 | 0.323364 | 0.386509 | 0.393894 | 0.165667 | 0.217917 | 0.159211 | ... | 0.462394 | 0.448107 | 0.197830 | 1.000000 | 0.304057 | 0.276994 | 0.382657 | 0.245631 | 0.474890 | 0.355813 |
| FTNT | 0.484578 | 0.529380 | 0.362659 | 0.426744 | 0.466309 | 0.583155 | 0.557200 | 0.372520 | 0.421267 | 0.298966 | ... | 0.569341 | 0.544509 | 0.460549 | 0.304057 | 1.000000 | 0.433000 | 0.378521 | 0.302912 | 0.419296 | 0.419359 |
| NVDA | 0.559668 | 0.529161 | 0.472328 | 0.523415 | 0.498667 | 0.549895 | 0.534651 | 0.336972 | 0.370356 | 0.230372 | ... | 0.541747 | 0.545350 | 0.296546 | 0.276994 | 0.433000 | 1.000000 | 0.453898 | 0.276076 | 0.420250 | 0.424380 |
| INTC | 0.533903 | 0.605375 | 0.406506 | 0.481682 | 0.454671 | 0.481022 | 0.469750 | 0.282441 | 0.309624 | 0.205115 | ... | 0.515151 | 0.520801 | 0.293506 | 0.382657 | 0.378521 | 0.453898 | 1.000000 | 0.305463 | 0.493593 | 0.417215 |
| CUB | 0.332338 | 0.365568 | 0.220368 | 0.263359 | 0.265071 | 0.346299 | 0.332117 | 0.267054 | 0.285079 | 0.190216 | ... | 0.382200 | 0.379033 | 0.208563 | 0.245631 | 0.302912 | 0.276076 | 0.305463 | 1.000000 | 0.360593 | 0.335412 |
| ACN | 0.588746 | 0.667848 | 0.383739 | 0.526520 | 0.457673 | 0.569139 | 0.556661 | 0.275456 | 0.339965 | 0.278909 | ... | 0.651217 | 0.655655 | 0.278169 | 0.474890 | 0.419296 | 0.420250 | 0.493593 | 0.360593 | 1.000000 | 0.571060 |
| EPAM | 0.571456 | 0.572117 | 0.394378 | 0.536802 | 0.496877 | 0.589638 | 0.582843 | 0.346317 | 0.389252 | 0.326512 | ... | 0.612359 | 0.588460 | 0.358673 | 0.355813 | 0.419359 | 0.424380 | 0.417215 | 0.335412 | 0.571060 | 1.000000 |
21 rows × 21 columns
normalized_rets = Normalized_Value.corr()
normalized_pair_value = normalized_rets.abs().unstack()
normalized_pair_value.sort_values(ascending = False)
EPAM EPAM 1.000000
TTD TTD 1.000000
INTC INTC 1.000000
NVDA NVDA 1.000000
FTNT FTNT 1.000000
IBM IBM 1.000000
PANW PANW 1.000000
MA MA 1.000000
V V 1.000000
IAC IAC 1.000000
ACN ACN 1.000000
MTCH MTCH 1.000000
ADBE ADBE 1.000000
CRM CRM 1.000000
NFLX NFLX 1.000000
AMZN AMZN 1.000000
FB FB 1.000000
MSFT MSFT 1.000000
CUB CUB 1.000000
FIVN FIVN 1.000000
GOOGL GOOGL 1.000000
MA V 0.892900
V MA 0.892900
MTCH IAC 0.786228
IAC MTCH 0.786228
CRM ADBE 0.785597
ADBE CRM 0.785597
CRM MA 0.781389
MA CRM 0.781389
MSFT V 0.777083
...
TTD FIVN 0.245916
FIVN TTD 0.245916
CUB IBM 0.245631
IBM CUB 0.245631
FIVN CUB 0.244070
CUB FIVN 0.244070
TTD NVDA 0.230372
NVDA TTD 0.230372
CUB FB 0.220368
FB CUB 0.220368
IBM IAC 0.217917
IAC IBM 0.217917
PANW TTD 0.210500
TTD PANW 0.210500
MTCH FIVN 0.210139
FIVN MTCH 0.210139
CUB PANW 0.208563
PANW CUB 0.208563
INTC TTD 0.205115
TTD INTC 0.205115
IBM PANW 0.197830
PANW IBM 0.197830
CUB TTD 0.190216
TTD CUB 0.190216
MTCH IBM 0.165667
IBM MTCH 0.165667
FIVN 0.161164
FIVN IBM 0.161164
TTD IBM 0.159211
IBM TTD 0.159211
Length: 441, dtype: float64
print("Stock returns: ")
print(rets.mean())
print('-' * 50)
print("Stock risks:")
print(rets.std())
Stock returns: GOOGL 0.000615 MSFT 0.001146 FB 0.000408 AMZN 0.001549 NFLX 0.001770 CRM 0.001465 ADBE 0.001733 MTCH 0.002332 IAC 0.002229 TTD 0.003777 FIVN 0.002638 V 0.001119 MA 0.001288 PANW 0.001030 IBM -0.000521 FTNT 0.001893 NVDA 0.000956 INTC 0.000745 CUB 0.000430 ACN 0.000529 EPAM 0.001336 dtype: float64 -------------------------------------------------- Stock risks: GOOGL 0.014273 MSFT 0.014212 FB 0.018601 AMZN 0.018599 NFLX 0.024110 CRM 0.016717 ADBE 0.018543 MTCH 0.028996 IAC 0.021549 TTD 0.043501 FIVN 0.028332 V 0.012656 MA 0.014115 PANW 0.021671 IBM 0.013002 FTNT 0.019859 NVDA 0.028336 INTC 0.016951 CUB 0.020920 ACN 0.011893 EPAM 0.016664 dtype: float64
table = pd.DataFrame()
table['Returns'] = rets.mean()
table['Risk'] = rets.std()
table.sort_values(by='Returns')
| Returns | Risk | |
|---|---|---|
| IBM | -0.000521 | 0.013002 |
| FB | 0.000408 | 0.018601 |
| CUB | 0.000430 | 0.020920 |
| ACN | 0.000529 | 0.011893 |
| GOOGL | 0.000615 | 0.014273 |
| INTC | 0.000745 | 0.016951 |
| NVDA | 0.000956 | 0.028336 |
| PANW | 0.001030 | 0.021671 |
| V | 0.001119 | 0.012656 |
| MSFT | 0.001146 | 0.014212 |
| MA | 0.001288 | 0.014115 |
| EPAM | 0.001336 | 0.016664 |
| CRM | 0.001465 | 0.016717 |
| AMZN | 0.001549 | 0.018599 |
| ADBE | 0.001733 | 0.018543 |
| NFLX | 0.001770 | 0.024110 |
| FTNT | 0.001893 | 0.019859 |
| IAC | 0.002229 | 0.021549 |
| MTCH | 0.002332 | 0.028996 |
| FIVN | 0.002638 | 0.028332 |
| TTD | 0.003777 | 0.043501 |
table.sort_values(by='Risk')
| Returns | Risk | |
|---|---|---|
| ACN | 0.000529 | 0.011893 |
| V | 0.001119 | 0.012656 |
| IBM | -0.000521 | 0.013002 |
| MA | 0.001288 | 0.014115 |
| MSFT | 0.001146 | 0.014212 |
| GOOGL | 0.000615 | 0.014273 |
| EPAM | 0.001336 | 0.016664 |
| CRM | 0.001465 | 0.016717 |
| INTC | 0.000745 | 0.016951 |
| ADBE | 0.001733 | 0.018543 |
| AMZN | 0.001549 | 0.018599 |
| FB | 0.000408 | 0.018601 |
| FTNT | 0.001893 | 0.019859 |
| CUB | 0.000430 | 0.020920 |
| IAC | 0.002229 | 0.021549 |
| PANW | 0.001030 | 0.021671 |
| NFLX | 0.001770 | 0.024110 |
| FIVN | 0.002638 | 0.028332 |
| NVDA | 0.000956 | 0.028336 |
| MTCH | 0.002332 | 0.028996 |
| TTD | 0.003777 | 0.043501 |
rf = 0.01
table['Sharpe Ratio'] = (table['Returns'] - rf) / table['Risk']
table
| Returns | Risk | Sharpe Ratio | |
|---|---|---|---|
| GOOGL | 0.000615 | 0.014273 | -0.657515 |
| MSFT | 0.001146 | 0.014212 | -0.623003 |
| FB | 0.000408 | 0.018601 | -0.515678 |
| AMZN | 0.001549 | 0.018599 | -0.454387 |
| NFLX | 0.001770 | 0.024110 | -0.341342 |
| CRM | 0.001465 | 0.016717 | -0.510572 |
| ADBE | 0.001733 | 0.018543 | -0.445825 |
| MTCH | 0.002332 | 0.028996 | -0.264458 |
| IAC | 0.002229 | 0.021549 | -0.360636 |
| TTD | 0.003777 | 0.043501 | -0.143054 |
| FIVN | 0.002638 | 0.028332 | -0.259846 |
| V | 0.001119 | 0.012656 | -0.701735 |
| MA | 0.001288 | 0.014115 | -0.617221 |
| PANW | 0.001030 | 0.021671 | -0.413920 |
| IBM | -0.000521 | 0.013002 | -0.809147 |
| FTNT | 0.001893 | 0.019859 | -0.408216 |
| NVDA | 0.000956 | 0.028336 | -0.319160 |
| INTC | 0.000745 | 0.016951 | -0.546021 |
| CUB | 0.000430 | 0.020920 | -0.457448 |
| ACN | 0.000529 | 0.011893 | -0.796362 |
| EPAM | 0.001336 | 0.016664 | -0.519909 |
table['Max Returns'] = rets.max()
table['Min Returns'] = rets.min()
table['Median Returns'] = rets.median()
total_return = stock_rets[-1:].transpose()
table['Total Return'] = 100 * total_return
table
| Returns | Risk | Sharpe Ratio | Max Returns | Min Returns | Median Returns | Total Return | |
|---|---|---|---|---|---|---|---|
| GOOGL | 0.000615 | 0.014273 | -0.657515 | 0.064164 | -0.052802 | 0.001230 | -0.164338 |
| MSFT | 0.001146 | 0.014212 | -0.623003 | 0.075705 | -0.054338 | 0.001430 | 1.175420 |
| FB | 0.000408 | 0.018601 | -0.515678 | 0.090613 | -0.189609 | 0.001056 | -1.584085 |
| AMZN | 0.001549 | 0.018599 | -0.454387 | 0.132164 | -0.078197 | 0.001709 | 1.620408 |
| NFLX | 0.001770 | 0.024110 | -0.341342 | 0.135436 | -0.094039 | 0.000892 | 4.522031 |
| CRM | 0.001465 | 0.016717 | -0.510572 | 0.102713 | -0.087061 | 0.001771 | 1.700333 |
| ADBE | 0.001733 | 0.018543 | -0.445825 | 0.122418 | -0.080372 | 0.002196 | 1.393806 |
| MTCH | 0.002332 | 0.028996 | -0.264458 | 0.172840 | -0.220925 | 0.002493 | 1.663894 |
| IAC | 0.002229 | 0.021549 | -0.360636 | 0.143129 | -0.177686 | 0.001866 | 1.026603 |
| TTD | 0.003777 | 0.043501 | -0.143054 | 0.433909 | -0.139760 | 0.002027 | 1.406729 |
| FIVN | 0.002638 | 0.028332 | -0.259846 | 0.241724 | -0.114168 | 0.001834 | 1.180287 |
| V | 0.001119 | 0.012656 | -0.701735 | 0.069827 | -0.048391 | 0.001905 | 0.763706 |
| MA | 0.001288 | 0.014115 | -0.617221 | 0.067449 | -0.062309 | 0.001788 | 1.337554 |
| PANW | 0.001030 | 0.021671 | -0.413920 | 0.172021 | -0.241540 | 0.000669 | 2.291859 |
| IBM | -0.000521 | 0.013002 | -0.809147 | 0.088645 | -0.076282 | 0.000212 | 0.566223 |
| FTNT | 0.001893 | 0.019859 | -0.408216 | 0.141796 | -0.132991 | 0.002306 | 0.127956 |
| NVDA | 0.000956 | 0.028336 | -0.319160 | 0.178259 | -0.187559 | 0.001654 | -0.112232 |
| INTC | 0.000745 | 0.016951 | -0.546021 | 0.105519 | -0.085890 | 0.000754 | 0.385032 |
| CUB | 0.000430 | 0.020920 | -0.457448 | 0.135514 | -0.117994 | 0.000000 | 0.825517 |
| ACN | 0.000529 | 0.011893 | -0.796362 | 0.058967 | -0.072826 | 0.001374 | 0.851080 |
| EPAM | 0.001336 | 0.016664 | -0.519909 | 0.094250 | -0.052893 | 0.001370 | 1.727465 |
table['Average Return Yearly'] = (1 + total_return)**(1 / number_of_years) - 1
table
| Returns | Risk | Sharpe Ratio | Max Returns | Min Returns | Median Returns | Total Return | Average Return Yearly | |
|---|---|---|---|---|---|---|---|---|
| GOOGL | 0.000615 | 0.014273 | -0.657515 | 0.064164 | -0.052802 | 0.001230 | -0.164338 | -0.000822 |
| MSFT | 0.001146 | 0.014212 | -0.623003 | 0.075705 | -0.054338 | 0.001430 | 1.175420 | 0.005860 |
| FB | 0.000408 | 0.018601 | -0.515678 | 0.090613 | -0.189609 | 0.001056 | -1.584085 | -0.007952 |
| AMZN | 0.001549 | 0.018599 | -0.454387 | 0.132164 | -0.078197 | 0.001709 | 1.620408 | 0.008069 |
| NFLX | 0.001770 | 0.024110 | -0.341342 | 0.135436 | -0.094039 | 0.000892 | 4.522031 | 0.022360 |
| CRM | 0.001465 | 0.016717 | -0.510572 | 0.102713 | -0.087061 | 0.001771 | 1.700333 | 0.008466 |
| ADBE | 0.001733 | 0.018543 | -0.445825 | 0.122418 | -0.080372 | 0.002196 | 1.393806 | 0.006945 |
| MTCH | 0.002332 | 0.028996 | -0.264458 | 0.172840 | -0.220925 | 0.002493 | 1.663894 | 0.008285 |
| IAC | 0.002229 | 0.021549 | -0.360636 | 0.143129 | -0.177686 | 0.001866 | 1.026603 | 0.005120 |
| TTD | 0.003777 | 0.043501 | -0.143054 | 0.433909 | -0.139760 | 0.002027 | 1.406729 | 0.007009 |
| FIVN | 0.002638 | 0.028332 | -0.259846 | 0.241724 | -0.114168 | 0.001834 | 1.180287 | 0.005884 |
| V | 0.001119 | 0.012656 | -0.701735 | 0.069827 | -0.048391 | 0.001905 | 0.763706 | 0.003811 |
| MA | 0.001288 | 0.014115 | -0.617221 | 0.067449 | -0.062309 | 0.001788 | 1.337554 | 0.006666 |
| PANW | 0.001030 | 0.021671 | -0.413920 | 0.172021 | -0.241540 | 0.000669 | 2.291859 | 0.011394 |
| IBM | -0.000521 | 0.013002 | -0.809147 | 0.088645 | -0.076282 | 0.000212 | 0.566223 | 0.002827 |
| FTNT | 0.001893 | 0.019859 | -0.408216 | 0.141796 | -0.132991 | 0.002306 | 0.127956 | 0.000640 |
| NVDA | 0.000956 | 0.028336 | -0.319160 | 0.178259 | -0.187559 | 0.001654 | -0.112232 | -0.000561 |
| INTC | 0.000745 | 0.016951 | -0.546021 | 0.105519 | -0.085890 | 0.000754 | 0.385032 | 0.001923 |
| CUB | 0.000430 | 0.020920 | -0.457448 | 0.135514 | -0.117994 | 0.000000 | 0.825517 | 0.004119 |
| ACN | 0.000529 | 0.011893 | -0.796362 | 0.058967 | -0.072826 | 0.001374 | 0.851080 | 0.004246 |
| EPAM | 0.001336 | 0.016664 | -0.519909 | 0.094250 | -0.052893 | 0.001370 | 1.727465 | 0.008600 |
initial_value = df.iloc[0]
ending_value = df.iloc[-1]
table['CAGR'] = ((ending_value / initial_value) ** (252.0 / days)) -1
table
| Returns | Risk | Sharpe Ratio | Max Returns | Min Returns | Median Returns | Total Return | Average Return Yearly | CAGR | |
|---|---|---|---|---|---|---|---|---|---|
| GOOGL | 0.000615 | 0.014273 | -0.657515 | 0.064164 | -0.052802 | 0.001230 | -0.164338 | -0.000822 | 0.093233 |
| MSFT | 0.001146 | 0.014212 | -0.623003 | 0.075705 | -0.054338 | 0.001430 | 1.175420 | 0.005860 | 0.198988 |
| FB | 0.000408 | 0.018601 | -0.515678 | 0.090613 | -0.189609 | 0.001056 | -1.584085 | -0.007952 | 0.040634 |
| AMZN | 0.001549 | 0.018599 | -0.454387 | 0.132164 | -0.078197 | 0.001709 | 1.620408 | 0.008069 | 0.270015 |
| NFLX | 0.001770 | 0.024110 | -0.341342 | 0.135436 | -0.094039 | 0.000892 | 4.522031 | 0.022360 | 0.293159 |
| CRM | 0.001465 | 0.016717 | -0.510572 | 0.102713 | -0.087061 | 0.001771 | 1.700333 | 0.008466 | 0.258622 |
| ADBE | 0.001733 | 0.018543 | -0.445825 | 0.122418 | -0.080372 | 0.002196 | 1.393806 | 0.006945 | 0.311459 |
| MTCH | 0.002332 | 0.028996 | -0.264458 | 0.172840 | -0.220925 | 0.002493 | 1.663894 | 0.008285 | 0.391361 |
| IAC | 0.002229 | 0.021549 | -0.360636 | 0.143129 | -0.177686 | 0.001866 | 1.026603 | 0.005120 | 0.413542 |
| TTD | 0.003777 | 0.043501 | -0.143054 | 0.433909 | -0.139760 | 0.002027 | 1.406729 | 0.007009 | 0.659274 |
| FIVN | 0.002638 | 0.028332 | -0.259846 | 0.241724 | -0.114168 | 0.001834 | 1.180287 | 0.005884 | 0.477057 |
| V | 0.001119 | 0.012656 | -0.701735 | 0.069827 | -0.048391 | 0.001905 | 0.763706 | 0.003811 | 0.197632 |
| MA | 0.001288 | 0.014115 | -0.617221 | 0.067449 | -0.062309 | 0.001788 | 1.337554 | 0.006666 | 0.229073 |
| PANW | 0.001030 | 0.021671 | -0.413920 | 0.172021 | -0.241540 | 0.000669 | 2.291859 | 0.011394 | 0.146571 |
| IBM | -0.000521 | 0.013002 | -0.809147 | 0.088645 | -0.076282 | 0.000212 | 0.566223 | 0.002827 | -0.099870 |
| FTNT | 0.001893 | 0.019859 | -0.408216 | 0.141796 | -0.132991 | 0.002306 | 0.127956 | 0.000640 | 0.342372 |
| NVDA | 0.000956 | 0.028336 | -0.319160 | 0.178259 | -0.187559 | 0.001654 | -0.112232 | -0.000561 | 0.100283 |
| INTC | 0.000745 | 0.016951 | -0.546021 | 0.105519 | -0.085890 | 0.000754 | 0.385032 | 0.001923 | 0.110117 |
| CUB | 0.000430 | 0.020920 | -0.457448 | 0.135514 | -0.117994 | 0.000000 | 0.825517 | 0.004119 | 0.037490 |
| ACN | 0.000529 | 0.011893 | -0.796362 | 0.058967 | -0.072826 | 0.001374 | 0.851080 | 0.004246 | 0.082661 |
| EPAM | 0.001336 | 0.016664 | -0.519909 | 0.094250 | -0.052893 | 0.001370 | 1.727465 | 0.008600 | 0.231237 |
table.sort_values(by='Average Return Yearly')
| Returns | Risk | Sharpe Ratio | Max Returns | Min Returns | Median Returns | Total Return | Average Return Yearly | CAGR | |
|---|---|---|---|---|---|---|---|---|---|
| FB | 0.000408 | 0.018601 | -0.515678 | 0.090613 | -0.189609 | 0.001056 | -1.584085 | -0.007952 | 0.040634 |
| GOOGL | 0.000615 | 0.014273 | -0.657515 | 0.064164 | -0.052802 | 0.001230 | -0.164338 | -0.000822 | 0.093233 |
| NVDA | 0.000956 | 0.028336 | -0.319160 | 0.178259 | -0.187559 | 0.001654 | -0.112232 | -0.000561 | 0.100283 |
| FTNT | 0.001893 | 0.019859 | -0.408216 | 0.141796 | -0.132991 | 0.002306 | 0.127956 | 0.000640 | 0.342372 |
| INTC | 0.000745 | 0.016951 | -0.546021 | 0.105519 | -0.085890 | 0.000754 | 0.385032 | 0.001923 | 0.110117 |
| IBM | -0.000521 | 0.013002 | -0.809147 | 0.088645 | -0.076282 | 0.000212 | 0.566223 | 0.002827 | -0.099870 |
| V | 0.001119 | 0.012656 | -0.701735 | 0.069827 | -0.048391 | 0.001905 | 0.763706 | 0.003811 | 0.197632 |
| CUB | 0.000430 | 0.020920 | -0.457448 | 0.135514 | -0.117994 | 0.000000 | 0.825517 | 0.004119 | 0.037490 |
| ACN | 0.000529 | 0.011893 | -0.796362 | 0.058967 | -0.072826 | 0.001374 | 0.851080 | 0.004246 | 0.082661 |
| IAC | 0.002229 | 0.021549 | -0.360636 | 0.143129 | -0.177686 | 0.001866 | 1.026603 | 0.005120 | 0.413542 |
| MSFT | 0.001146 | 0.014212 | -0.623003 | 0.075705 | -0.054338 | 0.001430 | 1.175420 | 0.005860 | 0.198988 |
| FIVN | 0.002638 | 0.028332 | -0.259846 | 0.241724 | -0.114168 | 0.001834 | 1.180287 | 0.005884 | 0.477057 |
| MA | 0.001288 | 0.014115 | -0.617221 | 0.067449 | -0.062309 | 0.001788 | 1.337554 | 0.006666 | 0.229073 |
| ADBE | 0.001733 | 0.018543 | -0.445825 | 0.122418 | -0.080372 | 0.002196 | 1.393806 | 0.006945 | 0.311459 |
| TTD | 0.003777 | 0.043501 | -0.143054 | 0.433909 | -0.139760 | 0.002027 | 1.406729 | 0.007009 | 0.659274 |
| AMZN | 0.001549 | 0.018599 | -0.454387 | 0.132164 | -0.078197 | 0.001709 | 1.620408 | 0.008069 | 0.270015 |
| MTCH | 0.002332 | 0.028996 | -0.264458 | 0.172840 | -0.220925 | 0.002493 | 1.663894 | 0.008285 | 0.391361 |
| CRM | 0.001465 | 0.016717 | -0.510572 | 0.102713 | -0.087061 | 0.001771 | 1.700333 | 0.008466 | 0.258622 |
| EPAM | 0.001336 | 0.016664 | -0.519909 | 0.094250 | -0.052893 | 0.001370 | 1.727465 | 0.008600 | 0.231237 |
| PANW | 0.001030 | 0.021671 | -0.413920 | 0.172021 | -0.241540 | 0.000669 | 2.291859 | 0.011394 | 0.146571 |
| NFLX | 0.001770 | 0.024110 | -0.341342 | 0.135436 | -0.094039 | 0.000892 | 4.522031 | 0.022360 | 0.293159 |